/**
 * @file error.h
 * @author chushang (email:chushangcs@163.com)
 * @brief 错误指示函数,当发生错误时,可以调用Error_Set函数设置错误
 * @version 0.1
 * @date 2025-04-29
 *
 * @copyright Copyright (c) 2025
 *
 */

#ifndef __ERROR_H
#define __ERROR_H

#include "stdint.h"

#pragma pack(1)
typedef struct error
{
    uint16_t line;   // 错误发生时的行数
    char *func_name; // 错误发生时的所在函数
    char *file_name; // 错误发生所在的文件

} Error;
#pragma pack()

extern Error error;

/**
 * @brief 设置错误
 *
 * @param func [in] 错误发生时所在的函数
 * @param line [in] 错误发生时所在的行数
 * @param file [in] 错误发生时所在的文件
 */
void Error_Occur(const char *func, uint16_t line, const char *file);

/**
 * @brief 初始化,主要是初始化错误指示灯
 *
 */
void Error_Init(void);

#endif // !__ERROR_H